Правила замены и локальные подстановки

Локальное правило

x->4

x

?x

p=4;
?p

(Sqrt[x])+(x^2)

(Sqrt[p])+(p^2)

Подстановка локального правила

r=x->4

r

(Sqrt[x])+(x^2)/.r

(x^2)+Sin[x]/.x->(Sqrt[y])

Замена по списку

(x^2)+Sin[y]/.{x->(Sqrt[z]),y->4}

Взаимные замены

(Sqrt[y])+(x^2)/.{x->y,y->x}

(Sqrt[y])+(x^2)/.x->y/.y->x

(Sqrt[y])+(x^2)/.{x->y,y->z}

Замена с повторением

(Sqrt[y])+(x^2)//.{x->y,y->z}

x=1 (⇔Set[x,1]    — глобальное правило, после создания применяется во всех вычислениях автоматически)
x->1 (⇔Rule[x,1] — локальное правило)
(x^2)/.x->1 (⇔ ReplaceAll[(x^2),x->1] — применение локального правила)
(x^2)+y/.{x->y,y->4}    (однократное применение списка правил)

(x^2)+y//.{x->y,y->4} (⇔ ReplaceRepeated[…] — полное применение списка правил)
x:>1 (⇔RuleDelayed[x,1] — задание локального правила с отложенным вычислением правой части)

(Sqrt[x])+(x^2)(Sqrt[y])/.(Sqrt[t_]):>Sin[t]

Замена операторов

a+b/.Plus->Times

ReplaceAll[ ] vs Apply[ ]

Times@@(a+b)

(((a+b))^2)/.Plus->Times

Times@@((((a+b))^2))

Apply[Times,(Sqrt[a+(Sqrt[b])])]

(Sqrt[a+(Sqrt[b])])/.Power->Times

Выражения сравнения

x==4

?x

3==4

2 2==4

a==b (⇔a==b⇔Equal[a,b] — выражение равенства)
a≠b (⇔a!=b⇔Unequal[a,b] — выражение неравенства)

a≥b (⇔a<=b⇔GreaterEqual[a,b])
a≤b (⇔a>=b⇔LessEqual[a,b])
a>b (⇔Greater[a,b])
a<b (⇔Less[a,b])

!！!
== — равенство (Equal[])
	= —  задание глобального правила (Set[])

Аналитические решения алгебраических уравнений

Уравнения

(x^2)+x==4

Solve[(x^2)+x==4]

Solve[(x^2)+x==-4]

Solve[(x^2)+(Sqrt[x])==4]

Неявные неизвестные

Solve[a (x^2)+x==4]

(*Solve[a x+b==0]
TreeForm[a x+b==0]*)

Явные неизвестные

Solve[a (x^2)+x==4,x]

Системы уравнений

Solve[{x+y==4,(y^2)==a},{x,y}]

Использование решений

sol=Solve[{x+y==4,(y^2)==a},{x,y}]

x/.sol

sol[[;;,1,2]]

sol[[1,1,2]]

sol[[1,;;,2]]

x+4y/.sol

Отбор решений

sol=Solve[{(x^2)+x==1}]

sol[[1]]
x/.sol[[1]]

Solve[{(x^2)+x==1,x>0}]

Solve[{(x^2)+(Sqrt[y])==2,(y^2)==1},{x,y}]

Solve[{(x^2)+(Sqrt[y])==2,(y^2)==1,x∈Reals},{x,y}]

Solve[{(x^2)+(Sqrt[y])==2,(y^2)==1,Im[x]==0},{x,y}]

*Комплексные числа

i==ii==I==(Sqrt[-1])

(Sqrt[-1])

(I^2)

Exp[I π]

(a+I b)(b+c I)

(a+I b)(b+c I)//ComplexExpand

Re[(a+I b)(b+c I)]//ComplexExpand

Im[(a+I b)(b+c I)]//ComplexExpand

ReIm[(a+I b)(b+c I)]//ComplexExpand

ReIm[#]=={Re[#],Im[#]}

Re[2+I]
Im[2+I]

ReIm[2+I]

Численные решения алгебраических уравнений

Solve[4Cos[x]==x,x]

NSolve[4Cos[x]==x,x,Reals]

sol=NSolve[4Cos[x]==x,x,Reals];
Show[{
Plot[{x,4Cos[x]},{x,-4,4},PlotStyle->{Automatic,Gray}],
ListPlot[{x,4Cos[x]}/.sol,PlotStyle->Directive[Orange,PointSize->0.025]]
}]

Быстрый поиск отдельного корня

FindRoot[4Cos[x]==x,{x,1}]

FindRoot[4Cos[x]==x,{x,-4}]
FindRoot[4Cos[x]==x,{x,-2}]
FindRoot[4Cos[x]==x,{x,1}]

NSolve[x==Tan[x],x,Reals]

Plot[{x,Tan[x]},{x,-15,15}]

FindRoot[{x==Tan[x]},{x,4}]

FindRoot[{x==Tan[x]},{x,10}]

Solve[] — решение алгебраических систем аналитическими методами
NSolve[] — решение алгебраических систем численными методами
FindRoot[] — быстрый поиск отдельного корня по начальному приближению

Solve[(x^2)==2,x]
Solve[(x^2)==2,x]//N
NSolve[(x^2)==2,x]

Solve[4Cos[x]==x,x]//N
NSolve[4Cos[x]==x,x,Reals]

*Примеры

Обращение замены координат

Исходная замена ({x, y} -> {x1, y1}) :

transform={x->x1+2y1,y->3x1-y1}

Система уравнений

transform/.Rule->Equal

Обратная замена ({x1, y1} -> {x, y}) :

Solve[transform/.Rule->Equal,{x1,y1}]

* +автоматическое определение неизвестных:

newcoords=Cases[transform[[;;,2]],_Symbol,All]//DeleteDuplicates

Solve[transform/.Rule->Equal,newcoords]

Замена внутренних параметров выражения

CustomPlot[expression_,range_,options___]:=
Plot[expression,range,PlotStyle->{
color/.{options}/.(color->Green (* цвет по умолчанию *))
}];

CustomPlot[Sin[x],{x,0,4}]
CustomPlot[Sin[x],{x,0,4},color->Purple]

Последовательность замен при вычислении без аргумента options:

color/.{} (* color -> color *)
color/.{}/.(color->Green) (* color /. color -> Green \[Implies] Green *)

Последовательность замен при вычислении с аргументом options :

color/.{color -> Purple} (* color -> Purple *)
color/.{color -> Purple}/.(color->Green) (* Purple /. color -> Green \[Implies] Purple *)